package com.desire.homework;

import java.io.File;
import java.util.*;

/**
 * @author desire
 */
public class _34_统计目录中的文件类型 {
    public static long count = 0;
    public static Map<String, List<String>> map = new HashMap<>();

    public static void main(String[] args) {
        fileTypeNums(System.getProperty("user.dir"));
        //map.forEach((k, v) -> System.out.printf("%s = %d %n", k, v.size()));
        map.forEach((k, v) -> System.out.printf("%s = %d %n %s %n", k, v.size(), v));
    }

    public static void fileTypeNums(String director) {
        fileTypeNums(new File(director));
    }

    public static void fileTypeNums(File director) {
        if (director.exists()) {
            for (File file : Objects.requireNonNull(director.listFiles())) {
                if (file.isDirectory()) {
                    fileTypeNums(file);
                } else {
                    // 是文件
                    String name = file.getName();
                    // 如果等与-1 说明是 没有扩展名  否则 就截取 扩展名(没有.)
                    String suffix = name.lastIndexOf(".") == -1 ? "未知" : name.substring(name.lastIndexOf(".") + 1);
                    // 如果 map中存在这一扩展名
                    if (map.containsKey(suffix)) {
                        // 将 key 存放到一个 list 集合中  map.get() 获取key对应的映射value
                        List<String> list = map.get(suffix);
                        // 因为泛型为 list集合 获取 文件的路径(做一个统计)
                        list.add(file.getAbsolutePath());
                        // 将 扩展名, 路径 放到map中
                        map.put(suffix, list);
                    } else {
                        List<String> list = new ArrayList<>();
                        list.add(file.getAbsolutePath());
                        map.put(suffix, list);
                    }
                }
            }

        }
    }
}
